package com.doitedu.day04.funcs

/**
 * @Date 22.6.23
 * @Created by HANGGE
 * @Description
 */
object _10Slice_Sliding {
  def main(args: Array[String]): Unit = {
    val ls = List[String]("a", "b", "c", "d", "e", "f")
    val res1 = ls.slice(1, 4) //[) 前闭后开  指定一个计算窗口
    println(res1)

    val ls2 = List[Int](1, 3, 2, 4, 5, 6, 7, 23)
    println(ls2.slice(2, 6).sum)
    // slice(i, i+2)  窗口的大小为2  by 步进
    // 窗口的大小 和 步进一致  滑动   数据只计算一次
    // 步进为1  <  窗口大小为2   数据有重复计算
    println("----------------")
    for (i <- 0 until ls2.length by 2) {
      val sum = ls2.slice(i, i + 2).sum
      println(sum)
    }
    println("----------------")
    // 使用滑动函数
    // 参数1  窗口大小  参数2 默认值1
    val iterator: Iterator[List[Int]] = ls2.sliding(2, 2)
    iterator.foreach(ls => println(ls.sum))

  }
}
